package com.zjsru.plan2023.oneday;

/**
 * @Author: CookLee
 * @Date: 2023/8/11
 * 矩阵对角线元素的和
 * \
 * 输入：mat = [[1,2,3],
 *             [4,5,6],
 *             [7,8,9]]
 * 输出：25
 * 解释：对角线的和为：1 + 5 + 9 + 3 + 7 = 25
 * 请注意，元素 mat[1][1] = 5 只会被计算一次。
 */
public class DiagonalSum {
    
    /**
     * 遍历,因为是遍历 所以不用考虑奇数长度时 最中间的元素重复两次
     *
     * @param mat 垫
     * @return int
     */
    public int diagonalSum(int[][] mat) {
        int ans = 0;
        int len = mat.length;
        for (int i = 0; i < len; i++) {
            for (int j = 0; j < len; j++) {
                //寻找对角线之和，即满足i==j 从左往下 或者是 i+j == len - 1 从右往下
                if (i == j || i + j == len - 1) {
                    ans += mat[i][j];
                }
            }
        }
        return ans;
    }
    
    public static void main(String[] args) {
        DiagonalSum diagonalSum = new DiagonalSum();
        int[][] mat = new int[][] {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
        System.out.println(diagonalSum.diagonalSum(mat));
    }
}
